<?php
    class Avoir {
        //Alias sur table : av
        public $id_avoir;
        public $id_commande;
        public $montant;
        public $valide;
		
        //Constructeur complet
        public function __construct($id_avoir, $id_commande, $montant, $valide) {
            $this->setId($id_avoir);
            $this->setIdCommande($id_commande);
            $this->setMontant($montant);
            $this->setValide($valide);
        }

        //Ajoute un objet Avoir à la BDD
        //Paramètre : aucun
        //Retourne (Avoir)
        public function add() {
            $sql =  'INSERT INTO avoir (id_commande, montant, valide) VALUES
                    ('.intval($this->id_commande).', '.$this->montant.', '.intval($this->valide).')';
            $this->setId(Db::Execute($sql));
            return $this;
        }

        //Modifie un objet Avoir dans la BDD
        //Paramètre : aucun
        //Retourne (Avoir)
        public function update() {
            $sql =  'UPDATE avoir
                    SET montant = '.Db::insertion($this->montant) . ', 
                        valide = '.intval($this->valide).'
                    WHERE
                        id_avoir = '.intval($this->getId());
            Db::Execute($sql);
            return $this;
        }
		
        //Désactive un avoir dans la BDD
        //Paramètre : aucun
        //Retourne (Avoir)
        public function suppr() {
            $this->setValide(false);
            $this->update();
        }

        //Récupère tout les Avoir des clients
        //Paramètre : aucun
        //Retourne collection de Avoir
        public static function getAvoirs() {
            $sql =  'SELECT
                        av.id_avoir as avid_avoir, av.id_commande as avid_commande, av.montant as avmontant, av.valide as avvalide
                    FROM avoir av';
            $tabRetour = array();
            $ps = Db::Execute($sql, true);
            foreach($ps as $p) {
                $tabRetour[] = new Avoir($p['avid_avoir'], $p['avid_commande'], $p['avmontant'], $p['avvalide']);
            }
            return $tabRetour;
        }
        
        //Crée un objet Avoir grâce à son ID
        //Paramètre : (int)id
        //Retourne (Avoir)
        public static function rechercheAvoir($id) {
            $sql =  'SELECT
                        av.id_avoir as avid_avoir, av.id_commande as avid_commande, av.montant as avmontant, av.valide as avvalide
                    FROM avoir av
                    WHERE
                        av.id_avoir = '.intval($id);
            $ps = Db::Execute($sql, true);
            foreach($ps as $p) {
                return new Avoir($p['avid_avoir'], $p['avid_commande'], $p['avmontant'], $p['avvalide']);
            }

            return null;
        }
		
        //GETTERS ET SETTERS
        public function getId() {return $this->id_avoir;}
        public function getIdCommande() {return $this->id_commande;}
        public function getMontant() {return $this->montant;}
        public function getValide() {return $this->valide;}

        public function setId($temp) {$this->id_avoir = intval($temp);}
        public function setIdCommande($temp) {$this->id_commande = intval($temp);}
        public function setMontant($temp) {
            $temp = str_replace(",", ".", $temp);
            $temp = (Double)$temp;
            $this->montant = number_format($temp, 2);
        }
        public function setValide($temp) {$this->valide = intval($temp);}
    }

?>